package HTML5_2024_5_30;

public class M {
    // 面试题: 你项目中如何处理异常
    /**
     * SpringMVC中有内置的异常处理机制 但是客户端反馈不友好
     * 全局异常处理器
     *  SpringMVC中的
     *  创建流程
     * Try...Catch...Finally
     * 1.需要在项目的根包下创建
     *  GlobalExceptionHandler类 在类上添加 声明为全局异常处理类
     * 2.在类中编写具体处理异常的方法 该方法具体对应某一种异常 在方法上添加ExceptionHandler标签
     * 3.需要定义一个能够处理所有处理方法都没法处理的异常的方法 Throwable
     * 工作流程
     * 1.找到GlobalExceptionHandler类
     * 2.找对应的处理方法
     * 3.若未找到 找其父类处理方法
     * 4.若未找到父类方法 交由Throwable处理
     * 5.若未找到Throwable方法 则会使用SpringMVC内置的异常处理机制
     * 处理异常的本质:
     *  返回客户端友好的错误信息 及错误原因 帮助客户端排错 发送正确请求
     * 关于异常的处理和抛出
     *  只有Controller的异常可以被GlobalExceptionHandler处理
     *  Mapper Service都不能处理异常 若Mapper Service处理了异常
     *  则Controller不会得知自己抛出了异常 返回的所有响应都是成功 不符合业务逻辑
     */
    // 对@Notnull @NotEmpty @NotBlank的理解
    /**
     * 约束条件不同
     * @Notnull
     * @NotEmpty
     * @NotBlank
     */
    // 对redis的理解
    /**
     * 用c语言编写的高性能内存数据库 key/value结构 一般用于缓存 消息队列 分布式锁 事务 持久化 主从 集群架构等
     * 支持多种数据结构 如字符串 哈希 列表 有序列表等
     *
     * redis缓存为什么块
     * 1.基于内存储存
     * 2.非阻塞的I/O操作 redis使用了非阻塞的I/O操作模型 即在进行网络通信时采用异步非阻塞的方式
     * 3.优化结构和算法
     */
}
